1. Technical Field
This invention relates to Object-Based Distributed Computing Systems, and more particularly to the field of naming systems.
2. Description of Related Art and Background
A portion of the disclosure of this patent document contains material which is subject to Copyright protection. The Copyright owner has no objection to the facsimile reproduction by anyone of the patent disclosure itself, as it appears in the Patent and Trademark Office patent files and records, but otherwise reserves all Copyright rights whatsoever, including specifically all rights to any other copies of all or part of any computer programs which may be disclosed herein.
A fundamental facility in any computing system is the Naming Service (the "Naming Service"). A Naming Service is the means by which names are associated with objects, and by which objects are found given only their names. A Name ("Name") is a sequence of one or more atomic names, where an atomic name ("Atomic Name") is a name defined by a naming convention which, for example, may be a sequence of one or more characters. For example, "user/John. Smith/foo" is a Name and "user", "John. Smith", and "foo" are Atomic Names. An object ("Object") is generally a combination of data and operators or operational routines related to that data. Naming Services usually provide operations for
associating, or binding, names to objects PA1 finding the objects bound to given names PA1 removing name association or bindings PA1 querying, renaming, etc.
In early versions of computing systems, the naming schemes used were not the result of well defined naming services but rather an incidental set of rules for naming things created by the system designer. Over the past decade more systematic and formal approaches to the development of computer systems designs have led to the creation of discrete or standalone computer services such as file systems, directory services, databases, etc. Each of these services, in many cases, have created their own set of rules for naming Objects within the service, and for use by clients.
Most of the early Naming Services did not communicate with each other. Clients had to use the services separately. In those rare cases where such services had to be used together, communication was by means of a "Composite Name". A "Composite Name" is a sequence of names from more than one Naming System. In today's UNIX.RTM. systems (UNIX is a registered trademark of UNIX Systems Laboratories, Inc., a wholly-owned subsidiary of Novell, Inc., certain applications, such as "mount" and "rcp", implement resolution of Composite Names with components from different naming systems. To do this, these applications may use a special delimiter character to separate Names in the Composite Name, enabling them to resolve the Composite Name to the corresponding Object by using each component naming system. Unfortunately, the use of such Composite Names is limited to the small set of applications that are able to resolve them. Also, such applications are typically restricted to only a small and fixed number of Naming Systems. Adding a new type of Naming System would require all of the applications to be changed.
A serious problem with the use of Composite Names today is the lack of uniformity and transparency. The user must be aware of which commands accept Composite Names, and their required syntax. For example, the composite name "sylvan:/temp/foo" is acceptable to the UNIX command "rcp", but it is not accepted by the command "cp".
More recently, the increased use of computers in business and at home, due to reduced costs and increased computer literacy, has led to increased demand for access between computer systems. Portable computers allow users to move them freely about the world but these users continue to require constant access to their host applications, files, databases and electronic mail via connections to other computer systems. New networks of computers require more access to more and more disparate networks and related systems. These increasing demands have produced the present focus on Distributed Computer Systems and on methods to interoperate these systems. This focus on interoperability is on developing means for easy access from one computing system to another, regardless of whether the two systems have different naming systems, different operating systems, different file systems, different databases, etc., with minimal cost of modifying any system to interoperate with another.
Moreover, widespread deployment of fiberoptic communication lines, together with high speed packet-switching technologies, are greatly increasing the capacity and performance of wide-area networks. These advances, coupled with new object-based technologies, create a tremendous need for systems and methods which will allow systems to communicate with each other efficiently.
A major stumbling block in developing such easy access between systems is the disparate naming conventions and naming operations used by the various individual file systems, databases, operating systems, communications systems, etc.
Several approaches have been and are being developed to address this problem of dealing with disparate naming systems. An approach for handling Composite Names is provided by the Open Software Foundation.TM./Distributed Computing Environment (the "OSF/DCE"). Open Software Foundation ("OSF") is a trademark of Open Software Foundation, Inc.
The OSF/DCE approach to this problem of handling the existing disparate naming systems is through the use of Composite Names.
OSF/DCE provides a method of handling composite names composed of three levels of naming systems: 1) the global directory service, either CCITT's X.500 or Internet's Domain Naming Service ("DNS") that names cells; 2) the OSF/DCE Cell Directory Service "CDS") that names users, file servers, databases, and other servers in a cell; and 3) the naming system of OSF's Distributed File System ("DFS") and other services named by CDS.
For example, the following is a Composite Name handled by OSF/DCE,
"/. . . / C=US/O=OSF/OU=Cambridge/fs/user/John.Smith/foo"
where
/=name of the local computer host's root
. . =name of the global root
C=US/O=OSF/OU=Cambridge=X.500 name of a cell root
fs=CDS name of the DFS root
user/John.Smith/foo=DFS UNIX file name.
This approach of OSF/DCE permits Composite Names spanning two or three Naming Systems (three in the above example), and provides a significant advance in handling disparate Naming Systems. However, this approach uses agents that are customized to specific naming systems. This method lacks the flexibility and scaiability that will be required by Object-Based distributed systems in the future. A change to one of OSF/DCE's Naming Systems, or the addition of a new type of Naming System requires changes to existing agents or the addition of a new customized agent. Also, the future need will be to support Composite Names that span an arbitrary number of Naming Systems, not just a fixed number such as two or three Naming Systems.
At present, the development of Object-Based Distributed Systems has just begun and the expected proliferation of such systems and the corresponding increase in the number and type of "Objects" requiring "Names" and Name resolution makes the development of efficient and flexible Naming Systems of paramount importance.
Accordingly, the present invention defines a model which can describe any Naming System and its related characteristics, defines a method of federating an arbitrary number of disparate Naming Systems with minimal computing cost and effort to participate in the federation, and defines an apparatus and method for using this federated Naming System to perform the functions of name resolution in an Object-Based Distributed Computing Environment. It is noted that existing Naming Systems which are not Object-Based may be able to participate in a federated system such as is disclosed herein, but only at some expense through the use of customized gateways.
The prior art does not define Naming Systems for Composite Name resolution in a federation of an arbitrary number of disparate Naming Systems.